﻿#pragma once

#include <X11/Xlib.h>
#undef Bool
#undef CursorShape
#undef Expose
#undef KeyPress
#undef KeyRelease
#undef FocusIn
#undef FocusOut
#undef FontChange
#undef None
#undef Status
#undef Unsorted

// ������
struct if_avplayer
{
	// ������Ƶ
	// flag: ��������
	//	����: 0(�ɹ�) -1(ʧ��)
	virtual int load(const char* url, int flag) = 0;

	virtual void destroy() = 0;

	// �ı��������:
	//	��Ƶ | ���廭�� | ���廭��
	virtual void set_flag(int flag) = 0;
	virtual int get_flag() = 0;

	enum flag_t {
		flag_audio =1,				// ��Ƶ
		flag_low_video =(1<<1),		// ���廭��
		flag_high_video =(1<<2)
	};
	// ��:
	//	ֻ������Ƶ
	//	set_stream_flag( flag_high_video );
	//	��������Ƶ
	//	set_stream_flag( flag_high_video | flag_audio );
};

// ������
struct if_avsender
{
	virtual void destroy() = 0;

	// ��ʼ����
	virtual int start(const char* url) = 0;

	// ֹͣ����
	virtual void end() = 0;
};

#ifdef _WIN32
#define PLAY_API
#else
#define PLAY_API __attribute__((visibility("default")))	
#endif

#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif

// �½�������
PLAY_API if_avplayer* create_avplayer(Window video_wnd);

// �½�������
PLAY_API if_avsender* create_avsender(Window camera_wnd);

#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
